# coding:utf-8

class HandlerManager(object):
    '''
    HandlerManager是整个后台处理的核心类
    主要功能分为两部分：
    1. 管理所有的请求处理实体
    2. 执行对应的处理过程并对结果进行分析总结
    '''
    def __init__(self, data_container = None):
        self.handler_map = {}
        self.data_container = data_container

    # 添加命令行处理实体
    def add_cmd_handler(self, cmd_key, handler):
        self.handler_map[cmd_key] = handler

    # 移除命令行处理实体
    def remove_cmd_handler(self, cmd_key):
        if self.handler_map.has_key(cmd_key):
            return self.handler_map.pop(cmd_key)
        else:
            return None

    # 获取命令行处理实体
    def find_cmd_handler(self, cmd_key):
        if self.handler_map.has_key(cmd_key):
            return self.handler_map[cmd_key]
        else:
            return None

    # 处理命令事件——核心函数
    def handle_cmd_event(self, cmd_key, params):
        '''
        根据命令标识符（cmd_key）和命令参数（params）处理web请求过程
        :return: result string formatted by json
        '''
        handler = self.find_cmd_handler(cmd_key)
        ret_dict = handler.handle_event(params)

        return ret_dict